package day5;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class demo4 {




    public int[] dx={0,0,1,-1};
    public int[] dy={1,-1,0,0};


    public int rotApple (ArrayList<ArrayList<Integer>> grid) {
      int m= grid.size();
      int n=grid.get(0).size();
boolean [][]vis=new boolean[m][n];
        Queue<int[]>queue=new LinkedList<>();

        for (int i = 0; i <m ; i++) {
            for (int j = 0; j <n ; j++) {
                if (grid.get(i).get(j)==2){
                    queue.add(new int[]{i,j});
                }
            }
        }
        int ret=0;
        while (!queue.isEmpty()){
            int sz= queue.size();
            for (int i = 0; i <sz ; i++) {
                int []t= queue.poll();
                int a=t[0];
                int b=t[1];
                for (int j = 0; j <4 ; j++) {
                    int y=a+dy[j];
                    int x=b+dx[j];
                    if (x>=0&&x<n&&y>=0&&y<m&&grid.get(y).get(x)==1&&!vis[y][x]){
                        vis[y][x]=true;
                        queue.add(new int[]{y,x});
                    }
                }
            }
            ret++;
        }
        for (int i = 0; i <m ; i++) {
            for (int j = 0; j <n ; j++) {
if (!vis[i][j]&&grid.get(i).get(j)==1){
    return -1;
}

            }
        }
        return ret;
    }

}
